﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace Tiscs.Practices.Web.Providers.Entities
{
    /// <summary>
    /// 应用程序信息实体。
    /// </summary>
    public class ApplicationEntity
    {
        /// <summary>
        /// 应用程序名称最大长度。
        /// </summary>
        public const int ApplicationNameMaxLength = 128;

        /// <summary>
        /// 应用程序描述最大长度。
        /// </summary>
        public const int DesciptionMaxLength = 256;
        

        /// <summary>
        /// 应用程序唯一标识。
        /// </summary>
        [Key]
        public Guid ApplicationId { get; set; }

        /// <summary>
        /// 应用程序名。
        /// </summary>
        [Required]
        [StringLength(ApplicationNameMaxLength)]
        public string ApplicationName { get; set; }

        /// <summary>
        /// 应用程序描述。
        /// </summary>
        [StringLength(DesciptionMaxLength)]
        public string Description { get; set; }

        /// <summary>
        /// 当前应用程序成员资格列表。
        /// </summary>
        public virtual ICollection<MembershipEntity> Memberships { get; set; } = new List<MembershipEntity>();

        /// <summary>
        /// 当前应用程序用户列表。
        /// </summary>
        public virtual ICollection<UserEntity> Users { get; set; } = new List<UserEntity>();

        /// <summary>
        /// 当前应用程序角色列表。
        /// </summary>
        public virtual ICollection<RoleEntity> Roles { get; set; } = new List<RoleEntity>();
    }
}
